package cn.iocoder.boot.domain.strategy.service;


import cn.iocoder.boot.domain.strategy.model.entity.RaffleFactorEntity;
import cn.iocoder.boot.domain.strategy.model.entity.RaffleAwardEntity;

/**
 * @author Huangjun
 * @description 抽奖策略接口，定义了执行抽奖的核心方法
 * 任何具体的抽奖策略实现类都必须实现此接口，确保系统具有一致的抽奖行为。
 * @create 2025/11/7
 */
public interface IRaffleStrategy {
    /**
     * 执行抽奖；用抽奖因子入参，执行抽奖计算，返回奖品信息
     *
     * @param raffleFactorEntity 抽奖因子实体对象，根据入参信息计算抽奖结果
     * @return 抽奖的奖品
     */
    RaffleAwardEntity performRaffle(RaffleFactorEntity raffleFactorEntity);
}
